package com.palominocia.capa_datos_nodoCentral.dbPostgreSQL.schema1.modelo.opciones;

import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Enumerated;
import javax.persistence.PersistenceContext;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord;
import org.springframework.roo.addon.tostring.RooToString;

@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class Opciones {
	@PersistenceContext(unitName = "persistenceUnit")
	transient EntityManager entityManager;
	/**
     */
	private Integer codOpcion;

	/**
     */
	private Integer codPadre;

	/**
     */
	private String nombreOpcion;

	/**
     */
	private Integer nivelOpcion;

	/**
     */
	private Integer ordenOpcion;

	/**
     */
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(style = "M-")
	private Date fechaCreacion;

	/**
     */
	@Enumerated
	private Habilitacion estadoHabilitacion;

	/**
     */
	private String txtDatosAdicionales;

	@Transient
	public static Opciones findOpcionesbyNombreOpcion(String metodoRemoto) {
		Opciones opci = null;
		try {
			opci = entityManager()
					.createQuery(
							"SELECT o FROM Opciones o WHERE o.nombreOpcion =:nombreOpcion AND o.estadoHabilitacion=:habilitacion",
							Opciones.class)
					.setParameter("nombreOpcion", metodoRemoto)
					.setParameter("habilitacion", Habilitacion.HABILITADO)
					.getSingleResult();
		} catch (Exception e) {
			opci = null;
		}
		return opci;
	}

	@Transient
	public static List<Opciones> findOpcionesbyCodOpcion(Integer codPadre) {
		List<Opciones> opci = null;
		try {
			opci = entityManager()
					.createQuery(
							"SELECT o FROM Opciones o WHERE o.codPadre =:codPadre AND o.estadoHabilitacion=:habilitacion",
							Opciones.class).setParameter("codPadre", codPadre)
					.setParameter("habilitacion", Habilitacion.HABILITADO)
					.getResultList();
		} catch (Exception e) {
			opci = null;
		}
		return opci;
	}
}
